package com.yuw.collectiontools;

import java.util.*;

public class TestDriver {
    public static void main(String[] args) {
        // 集合工具类的使用
        test01();
        System.out.println("============================");
        test011();
        System.out.println("============================");
        test012();

    }

    /**
     * Collections工具类的使用
     */
    public static void test012() {
        // 对list集合中的各个元素进行牌勋
        List<Teacher> list = new ArrayList();
        // 添加元素
        list.add(new Teacher("zhangsan", "10010", 78));
        list.add(new Teacher("lisi", "10010", 88));
        list.add(new Teacher("wangwu", "10010", 98));
        list.add(new Teacher("zhaoliu", "10010", 68));
        list.add(new Teacher("sunqi", "10010", 58));
        list.add(new Teacher("qianba", "10010", 92));

        Set set = new TreeSet();
        //set.add(new Teacher("qianba", "10010", 92),); // ? 发生了运行时异常？ 提供Teacher类的比较器对象

        System.out.println("排序之前：");
        printListTea(list);

        // 使用工具类进行排序  // 匿名内部类
        Collections.sort(list, new Comparator<Teacher>() {
            @Override
            public int compare(Teacher stu1, Teacher stu2) {
                // 这里是业务逻辑处理的地方
                // 默认值  默认是等于
                int i = 0;
                if (stu1 != null && stu2 != null) {
                    if (stu1.getTeaSore() > stu2.getTeaSore()) {
                        // 大于
                        i = 1;
                    }
                    if (stu1.getTeaSore() < stu2.getTeaSore()) {
                        // 小于
                        i = -1;
                    }
                }
                return i;
            }
        }); //??? 匿名内部类提供Teacher类的比较器对象

        System.out.println("排序之后：");
        // 排序之后遍历结果
        printListTea(list);
    }


    /**
     * Collections工具类的使用
     */
    public static void test011() {
        // 对list集合中的各个元素进行牌勋
        List<Student> list = new ArrayList();
        // 添加元素
        list.add(new Student("zhangsan", "10010", 78));
        list.add(new Student("lisi", "10010", 88));
        list.add(new Student("wangwu", "10010", 98));
        list.add(new Student("zhaoliu", "10010", 68));
        list.add(new Student("sunqi", "10010", 58));
        list.add(new Student("qianba", "10010", 92));

        Set set = new TreeSet();
        set.add(new Student("qianba", "10010", 92)); // ? 发生了运行时异常？ 使Student类实现 Comparatable接口

        System.out.println("排序之前：");
        printListStu(list);

        // 使用工具类进行排序
        Collections.sort(list); //??? 使Student类实现 Comparatable接口

        System.out.println("排序之后：");
        // 排序之后遍历结果
        printListStu(list);

    }

    /**
     * Collections工具类的使用
     */
    public static void test01() {
        // 对list集合中的各个元素进行牌勋
        List<String> list = new ArrayList();
        // 添加元素
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        list.add("zhaoliu");
        list.add("sunqi");
        list.add("qianba");

        System.out.println("排序之前：");
        printList(list);

        // 使用工具类进行排序
        Collections.sort(list);

        System.out.println("排序之后：");
        // 排序之后遍历结果
        printList(list);

    }

    /**
     * 打印list中的元素对象
     *
     * @param list 被打印遍历的list
     */
    private static void printList(List<String> list) {
        for (String str : list) {
            System.out.print("   " + str);
        }
        // 换行
        System.out.println();
    }

    /**
     * 打印list中的元素对象
     *
     * @param list 被打印遍历的list
     */
    private static void printListStu(List<Student> list) {
        for (Student str : list) {
            System.out.println("   " + str);
        }
        // 换行
        System.out.println();
    }

    /**
     * 打印list中的元素对象
     *
     * @param list 被打印遍历的list
     */
    private static void printListTea(List<Teacher> list) {
        for (Teacher str : list) {
            System.out.println("   " + str);
        }
        // 换行
        System.out.println();
    }
}
